/**
主要回顾：模拟用户系统


*/

import java.util.*;

//用户类
class User{
    private String username;
    private String password;
    
    public String getUserName(){
        return this.username;
    }
    public void setUserName(String username){
        this.username = username;
    }
    
    public String getPassWord(){
        return this.password;
    }
    
    public void setPassWord(String password){
        this.password = password;
    }
}

class ImitateUserSystem {
    public static void main(String[] args) {
        
        User[] users = null;    //创建存放用户的数组，还没使用，先不初始化
        Scanner scanner = new Scanner(System.in);    //初始化一个 Scanner，用于读取键盘输入

        while (true) {          //不退出则一直运行
            System.out.println("请选择：A（注册）    B（查看用户）    C（退出系统");
            String option = scanner.next();
            
            //如果输入 C，则退出系统（因为没有进行数据持久化，退出之后数据会消失）
            if (option.toUpperCase().equals("C")) {
                break;
            }//如果输入 A，则添加新用户
            else if (option.toUpperCase().equals("A")) {
                //提示输入用户信息
                System.out.println("请选择输入用户名：");
                String name = scanner.next();
                System.out.println("请选择输入密码：");
                String password = scanner.next();
                
                //扩展存放用户的数组，以存放用户信息
                users = expandUserAmount(users);
                //保存用户信息
                users[users.length-1] = new User();
                users[users.length-1].setUserName(name);
                users[users.length-1].setPassWord(password);  
            }//如果输入 B，则显示系统中的用户
            else if (option.toUpperCase().equals("B")) {
                if (users == null) {    //如果没有添加过用户，则提示没有用户
                    System.out.println("没有用户");
                }else {                 //否则，遍历存放用户的数组，输出用户信息
                    for (int i=0; i<users.length; i++) {
                        System.out.println("用户名: "+ users[i].getUserName() + "\t密码: " + users[i].getPassWord());
                    }
                }
            }else {//如果输入除 A、B、C 以外的其他信息，则忽略
                System.out.println("请选择：A（注册）    B（查看用户）    C（退出系统");
            }
        } 
    }
    
    //用于扩展数组的容量，以便继续添加新用户
    public static User[] expandUserAmount(User[] users){
        int newAmout = 0;       //记录用户数量
        if (users == null) {    //如果是第一次添加，不能访问 users.length
            newAmout = 1;
        } else {                //每次扩展，增加一个用户
            newAmout = users.length + 1;
        }
        User[] newUsers = new User[newAmout];    //新建一个数组来存放用户
        for (int i=0; i<newAmout-1; i++) {       //把已经保存的用户复制到新数组里
            newUsers[i] = users[i]; 
        }
    
        return newUsers;        //返回新存放新用户的数组
    }
}